Authentication of service requests initiated from a social networking site

ABSTRACT

Described are computer-based methods and apparatuses, including computer program products, for authenticating user service requests from a social networking site. Data representing a selected message and an originator of the selected message is stored. Data representing a reply to the originator of the selected message is transmitted for posting at the social networking server, the reply including data that causes transmission of a service request to the server when actuated. Data representing the service request and a sender of the service request is received. Data representing a user profile of the sender of the service request is retrieved from the social networking server. One or more attributes of the user profile of the sender are compared against one or more attributes of the stored data representing the originator of the selected message in order to verify the one or more attributes of the user profile.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is continuation of U.S. patent application Ser. No.16/126,299 filed Sep. 10, 2018, which is a continuation of U.S.application Ser. No. 14/543,397 filed on Nov. 17, 2014, which claims thebenefit of U.S. application Ser. No. 12/967,782, filed on Dec. 14, 2010,all of which are incorporated herein by reference in their entirety forall purpose.

FIELD OF THE INVENTION

The present invention relates generally to computer-based methods andapparatuses, including computer program products, for authentication ofservice requests initiated from a social networking site.

BACKGROUND

With the advent of social networking sites (e.g., Facebook, Twitter,MySpace, LinkedIn, and other social networking sites), it has becomeincreasingly common for people to publicly share information. Socialnetworking sites typically allow a user to create and maintain their ownunique user profile that contains personal information about themselves(e.g., their name, residence, hobbies, etc.). Once a user becomes amember of a social networking site, the user can communicate with otherusers of the social networking site (e.g., with a specific individual,with a group of individuals, or with all users of the social networkingsite).

A user can send messages or post updates to one or more other users (forexample, at their own volition, or in response to a previous message orupdate from themselves or another user). These updates can include anytype of information, often being limited only by the user's imagination.Some messages include status updates that describe what the user iscurrently doing at the time of the status update, or what the userintends to do in the near future. Some updates express a user'ssatisfaction (or dissatisfaction) with a product or experience. Someupdates ask questions to other users of the social networking site.Depending on the context, it is desirable to monitor the content of themessages or updates and to allow the user or people (e.g., associatedwith the user in some way, such as a friend of the user, a contact ofthe user, members of the same group of the user) to initiate servicerequests.

SUMMARY OF THE INVENTION

The techniques described herein provide computerized methods,apparatuses, and computer program products for authentication of servicerequests initiated from a social networking site. Such authenticationfacilitates, for example, provisioning service requests to users of thesocial networking site only upon authorization of the requesting users.

In one embodiment, the invention features a computerized method forauthenticating user service requests from a social networking site. Themethod includes monitoring, at a server, data representing messagesposted at a social networking server. The method includes storing, bythe server, data representing a selected message and an originator ofthe selected message. The method includes transmitting, from the server,data representing a reply to the originator of the selected message forposting at the social networking server, the reply including data thatcauses transmission of a service request to the server when actuated.The method includes receiving, at the server, data representing theservice request and a sender of the service request. The method includesretrieving, by the server, data representing a user profile of thesender of the service request from the social networking server. Themethod includes comparing, by the server, one or more attributes of theuser profile of the sender against one or more attributes of the storeddata representing the originator of the selected message in order toverify the one or more attributes of the user profile. The methodincludes processing, by the server, the service request from the senderif the one or more attributes of the user profile of the sender matchthe one or more attributes of the stored data representing theoriginator of the selected message.

In another embodiment, the invention features a computer programproduct, tangibly embodied in a non-transitory computer readable medium.The computer program product includes instructions being configured tocause a data processing apparatus to monitor data representing messagesposted at a social networking server. The computer program productincludes instructions being configured to cause a data processingapparatus to store data representing a selected message and anoriginator of the selected message. The computer program productincludes instructions being configured to cause a data processingapparatus to transmit data representing a reply to the originator of theselected message for posting at the social networking server, the replyincluding data that causes transmission of a service request to theserver when actuated. The computer program product includes instructionsbeing configured to cause a data processing apparatus to receive datarepresenting the service request and a sender of the service request.The computer program product includes instructions being configured tocause a data processing apparatus to retrieve data representing a userprofile of the sender of the service request from the social networkingserver. The computer program product includes instructions beingconfigured to cause a data processing apparatus to compare one or moreattributes of the user profile of the sender against one or moreattributes of the stored data representing the originator of theselected message in order to verify the one or more attributes of theuser profile. The computer program product includes instructions beingconfigured to cause a data processing apparatus to process the servicerequest from the sender if the one or more attributes of the userprofile of the sender match the one or more attributes of the storeddata representing the originator of the selected message.

In another embodiment, the invention features an apparatus forauthenticating user service requests from a social networking site. Theapparatus includes a database configured to store data representing aselected message and an originator of the selected message. Theapparatus includes a server in communication with the database with aprocessor and memory configured to monitor data representing messagesposted at a social networking server. The server is configured totransmit data representing a reply to the originator of the selectedmessage for posting at the social networking server, the reply includingdata that causes transmission of a service request to the server whenactuated. The server is configured to receive data representing theservice request and a sender of the service request. The server isconfigured to retrieve data representing a user profile of the sender ofthe service request from the social networking server. The server isconfigured to compare one or more attributes of the user profile of thesender against one or more attributes of the stored data representingthe originator of the selected message in order to verify the one ormore attributes of the user profile. The server is configured to processthe service request from the sender if the one or more attributes of theuser profile of the sender match the one or more attributes of thestored data representing the originator of the selected message.

In other examples, any of the aspects above can include one or more ofthe following features. The service request can be a request to initiatea chat session. Comparing can include comparing a person attribute inthe user profile to a person attribute in the stored data representingthe originator to determine whether the sender is the originator of theselected message. Comparing can include comparing a follower attributein the user profile to a follower attribute in the stored datarepresenting the originator to determine whether the sender is afollower of the originator of the selected message.

In some examples, comparing includes comparing a location attribute inthe user profile to a location attribute in the stored data representingthe originator to determine whether the sender is in a same location asthe originator of the selected message. Retrieving the data representinga user profile can include transmitting data representing an accessauthorization to the sender of the service request for authorization toretrieve the data representing the user profile, and receiving datarepresenting a response to the access authorization, the responseincluding data indicative of the sender providing access authorization.

In other examples, processing the service request includes transmittinga request to a chat server to establish a chat between the sender of theservice request and a third party. Data representing a second userprofile of the originator of the selected message can be retrieved froma second social networking server. Data representing the reply can betransmitted to the originator at the second social networking server. Anaggregated social media profile for the originator including the seconduser profile and the data representing the selected message and theoriginator of the selected message can be stored.

In some examples, the social networking server provides a socialnetworking service to users, the social networking service including asocial networking service provided by a social networking site selectedfrom the group consisting of twitter.com, facebook.com, myspace.com, orany combination thereof. The service request can be an advertisementrequest, a support request, a voice call request, or any combinationthereof.

In other examples, the social networking server provides a socialnetworking service to users, the social networking service including asocial networking service provided by a social networking site selectedfrom the group consisting of twitter.com, facebook.com, myspace.com, orany combination thereof. The server can include a user interfaceconfigured to display the data representing messages posted at thesocial networking server.

The techniques, which include both methods and apparatuses, describedherein can provide one or more of the following advantages. Informationcan be retrieved from social networking sites based on keywords andreacted to as desired (e.g., by a predefined set of rules). If, forexample, a message posted by an originating user includes one or morekeywords of interest, a response (e.g., posted reply message) can besent to the originator of the message that includes invocable data toinitiate a service request by a user of the social networking site(e.g., by the originator or other users of the social networking site).Once initiated, the system can authenticate the initiator of the servicerequest (e.g., based on a user profile of the initiator) to verify that,for example, the service request is only granted to a desired audienceof the social networking site (e.g., to verify that the initiatorprofile matches the originator profile, or the initiator profile isrelated to the originator profile). Advantageously, services such asadvertisements, chat services, live help, and other services can beprovided to a targeted group of users of social networking sites.

Social media profiles can be created for users of the social networkingsite that includes account information for the users aggregated across aplurality of social networking sites to which the user belongs (e.g.,for users that post messages that are responded to by the systemdescribed herein). The aggregated social media profile can be used torespond to an originator of a message at any one of the originator'smany social media services. Advantageously, the targeted group of usersfor the services is spread across multiple social networking sites.

Other aspects and advantages of the present invention will becomeapparent from the following detailed description, taken in conjunctionwith the accompanying drawings, illustrating the principles of theinvention by way of example only.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other aspects, features, and advantages of the presentinvention, as well as the invention itself, will be more fullyunderstood from the following description of various embodiments, whenread together with the accompanying drawings.

FIG. 1 is a diagram showing an exemplary system for implementing servicerequests for a social networking site;

FIGS. 2A and 2B are diagrams of an exemplary social networking page fora social networking site according to the present invention;

FIG. 3 is a flow chart showing an exemplary method for processing aservice request; and

FIG. 4 is a flow chart showing an exemplary method for authenticating aservice request.

DETAILED DESCRIPTION

In general overview, computerized systems and methods are provided forprovisioning services to authenticated users of social networkingservices provided by social networking sites. Social networking sites(or social media) can be monitored so that messages of interest (e.g.,posted by users of the social networking sites) are responded to andprovided with invocable data to initiate a service request. The actuatorof the service request (which can be the originator of the identifiedmessage or another user of the social networking site) is authenticatedbefore providing the actuator with the service associated with theservice request. In some examples, the user profile (or data profile,e.g., which is requested from the social networking site) associatedwith the actuator of the service request is compared against the storeddata for the associated identified message (e.g., a user profile for theuser that initiated the associated identified message) to authenticateone or more attributes between the originator of the identified messageand the actuator of the service request.

FIG. 1 is an exemplary diagram showing an exemplary system 100 forimplementing service requests for a social networking site. The system100 includes a social networking server 102. The social networkingserver 102 is in communication with a plurality of user devices 104Athrough 104N (collectively referred to herein as user devices 104). Thesocial networking server 102 is also in communication with a monitoringserver 106, which includes a database 108. The monitoring server 106 isalso in communication with user devices 104. Application server 110 isin communication with user devices 104 and the monitoring server 106.The computerized elements of system 100 can be in communication using,for example, the internet, cellular links, and/or any other type of dataor voice communication.

The social networking server 102 can be, for example, a single webserver with a processor and memory, or a plurality of web serversconfigured to provide a social networking service to the user devices104. The social networking services can include, for example, providingcomputerized services for the user to maintain or update their profilewith the social networking site, providing computerized services thatfacilitate communication with other users of the social networking site,providing computerized services for posting communications or messages,and other services offered through social networking sites. The socialnetworking services can include those service provided by, for example,twitter.com, facebook.com, myspace.com, or linkedin.com. The socialnetworking site provides an application programming interface (API) thatfacilitates monitoring keywords in messages or other data used withinthe social networking service (e.g., which can be viewed by user devices104). Although the following description is directed to an embodimentinvolving the social networking site twitter.com, the describedcomputerized systems and methods are not so limited and can be appliedto other social networking sites, such as facebook.com, myspace.com, orlinkedin.com.

The API is an interface implemented by the social networking site thatenables other software programs (e.g., a program executed by themonitoring server 106) to interact with the social networking site. Thesocial networking site provides services through the API, and the APIallows the other software programs to access the services. For example,the API services can include services to monitor keywords containedwithin user communications posted in the social networking site,services to post communications (e.g., messages) to users of the socialnetworking site, or services to obtain information about users of thesocial networking site (e.g., user profile information).

The user devices 104 are computing devices with a processor and memorythat can interact with the social networking site. For example, the userdevices 104 can include desktop computers, laptop computers, tablet PCs,and/or smart phones. A user of a social networking site can use a userdevice 104 to log into the social networking site and to use theprovided social networking services. A user can use any user device 104;they profile information for a user can be determined independently fora user from the actual user device 104.

The monitoring server 106 is a computing device having a processor andmemory that uses the API for the social networking site to monitor oneor more configurable keywords. For example, a computer hardware companythat specializes in selling computer hard drives may want toautomatically monitor user posts (or messages) to the social networkingserver 102 to identify posts that includes keywords or phrases relatedto their business. Advantageously, the monitoring server 106 can receiveinformation based on the keywords and react to the keywords as desired(e.g., if a question is posted from a user device 104 about “harddrives,” the monitoring server can transmit a link to the user device104 that, when invoked, establishes a chat connection with a person whois knowledgeable about hard drives and who can answer the questiontransmitted from the user device 104).

For example, the Twitter social networking site provides an API thatallows the monitoring server 106 to monitor keywords contained withintweets. A tweet is a posted message that is viewable by users of thetwitter.com site. The monitoring server 106 can interface with thetwitter social networking site using the API (e.g., by subscribing to aservice through the API, such a notification service that pushesinformation to programs that implement certain functions of the API)with one or more keywords to receive notifications that the keyword isbeing tweeted, the number of tweets that include the keyword, the numberof followers that can see the tweet, and/or other pertinent information.When the monitoring server 106 identifies a keyword, the monitoringserver 106 can send a reply tweet to the user that posted the tweetcontaining the keyword. The database 108 is configured to store datarepresenting selected messages or tweets (e.g., those that contain themonitored keyword) and an originator of the selected message (e.g.,which user device 104 transmitted the selected message to the socialnetworking server 102).

The monitoring server 106 can be in communication with an operatorterminal (not shown) that includes a graphical user interface configuredto display the data representing messages posted at the socialnetworking server 102. For example, the monitoring server 106 candisplay information about the identified messages that include the oneor more monitored keywords. The information about the messages caninclude, for example, the date of the message, the number of followersof the user that posted the message (e.g., people who are subscribed tosee the particular message and any related messages), the number offriends of the posting user (e.g., the number of people the posting userhas established a relationship with in the social networking site), thegeographical location of the posting user (e.g., to the country level,state level, city level, etc.), an identifier for the message, a tokenfor the message (e.g., an Open Authorization (OAuth) token), the sourceof the message (e.g., the user posted the message via the web, via amobile device, etc.), the content of the message, the number of messagesrelated to the posted message (e.g., the number of messages in themessage string that contained the posted message, such as the count oftweets), the user image associated with the posting user (e.g., apicture of the user), the name of the posting user, a user nameassociated with the posting user in the social networking site (e.g., ascreen name for the user), and/or other information gleaned from themessage (e.g., based on the posted message itself, a user profileassociated with the posting user, or other information from the socialnetworking site).

An operator can view the graphical user interface provided by theoperator terminal to decide how to respond to the identifiedmessage/post. For example, the operator may decide not to respond to theidentified message based on one or more criteria associated with theidentified message (e.g., geographical area, message content, etc.). Orthe operator can decide to send a response to the identified message.This process is described in further detail with respect to FIG. 3 .

The application server 110 provides one or more services to the userdevices 104. The service can include, for example, a chat service (e.g.,between the user device 104 and a third party, such as a personknowledgeable about a question posed from the user device 104), anadvertisement service (e.g., advertisements related to the keywords ofthe user's message), a support service (e.g., documents or links todocuments related to the user's message), and/or a voice service (e.g.,the service facilitates a call between the user and a third party, suchas a person knowledgeable about a question posted from the user device104). For example, as will be further described below, the monitoringserver 106 can, through the API, post a message in reply to a postedmessage, the posted message containing a link (e.g., a URL). The link,once invoked by a user device 104, initiates a service with theapplication server 110. The monitoring server 106 can authenticate theuser device 104 before providing the service to the user (e.g., asdescribed with reference to FIG. 4 below based on a data/user profileassociated with the user device 104).

FIGS. 2A and 2B are diagrams of exemplary social networking pages 200Aand 200B, respectively, for a social networking site according to thepresent invention. Social networking page 200A includes posted messages202A through 202N (collectively posted messages 202). Posted message202A includes a logo 204, username user_one 206, content 208 (i.e., “Mycomputer has been very slow lately”), and posting information 210 (i.e.,“8 minutes ago via web”). The username user_one 206 indicates which userposted the message 202A (e.g., a user of a user device 104). This isadvantageous, for example, to tell users apart when multiple userdevices 104 are posting messages for a particular message thread ormessage board. The content 208 is the text that the posting useruser_one 206 entered for the posted message 202A. The postinginformation 210 indicates how long ago user_one 206 posted the message202A (i.e., 8 minutes ago) and how user_one 206 posted the message(i.e., via the web).

Posted message 202N includes a logo 212, username user_one 206, content214 (i.e., “What is the best kind of computer hard drive to buy?”), andposting information 216 (i.e., “7 minutes ago via web”). Posted messages202 are used for illustrative purposes only and are not intended to belimiting. One skilled in the art can appreciate that the informationcontained within the posted messages 202 can be modified withoutdeparting from the spirit of the techniques described herein.

Referring to FIG. 1 , user_one 206 (where “user_one” is a screen namerepresentative of user device 104 or of an operator of the user device104) posted message 202A to the social networking server 102. One minutelater user_one 206 posted the posted (using a user device 104) message202N to the social networking server 102. User_one 206 can configure hisaccount with the social networking site to control which other users cansee posted messages 202A and 202N. There can be posted messages by otherusers between posted messages 202A and 202N (e.g., a different userdevice 104 can post a message in response to posted message 202A). Forexample, all people following the posts on social networking page 200Acan see posted message 202A and can choose to post a message inresponse. Similarly, for example, any person that user_one 206 hasestablished a relationship within the social networking site (e.g.,friends) can view the posted message 202A, and/or any user device 104can view posted message 202A.

The social networking page 200B in FIG. 2B includes posted messages 202Aand 202N from FIG. 2A and also includes posted message 202N+1. Postedmessage 202N+1 includes a logo 218, username auto_reply 220, content 222(i.e., “What do you want to know about hard drives?”), a link 224 thatcauses transmission of a service request to the monitoring server 106,and posting information 226 (i.e., “5 minutes ago via API in response touser_one”). The posting information 226 indicates that posted message202N+1 was posted by auto_reply 220 (e.g., a user with the screen name“auto_reply,” which may correspond to an individual user or a company)five minutes ago via an API (e.g., an API to the social networking siteprovided by social networking server 102, which allows messages to beposted in response to a user's message) in response to the postedmessage 202N by user_one 206. Message 202N+1 will be discussed infurther detail with respect to FIG. 3 below. The posted message 202N+1can be transmitted automatically (e.g., by the monitoring server 106based on rules stored in the database 108) or manually (e.g., by anoperator of the monitoring server 106).

FIG. 3 is an exemplary flow chart showing an exemplary method 300 forprocessing a service request. Referring to FIG. 1 , at step 302 themonitoring server 106 monitors data representing messages posted at thesocial networking server 102. At step 304, the monitoring server 106stores data representing a selected message and an originator of theselected message. At step 306, the monitoring server 106 transmits datarepresenting a reply to the originator of the selected message (e.g., tothe originating user device 104) for posting at the social networkingserver 102. The reply includes data that causes transmission of aservice request to the monitoring server 106 when actuated. At step 308,the monitoring server 106 receives data representing the service requestand a sender of the service request (e.g., which user device 104actuated the data that causes transmission of the service request).

At step 310, the monitoring sever 106 determines whether to verify oneor more attributes of the sender of the service request. For example,the monitoring server 106 can determine whether or not to verifyattributes of the sender based on the data of the sender (e.g., theattributes in the data). In some examples, the monitoring server 106 canbe configured (e.g., via a stored variable) to automatically verify, ornot verify, the attributes of the sender. If the monitoring server 106is configured to verify one or more attributes, the method 300 proceedsto step 400 of FIG. 4 . If the monitoring server is not configured toverify the attributes of the sender, the method 300 proceeds to step 312and the monitoring server processes the service request.

Referring to step 302, the monitoring server 106 monitors datarepresenting messages posted at the social networking server 102. Forexample, users of the social networking site Twitter post tweets to thesocial networking server 102. The monitoring server 106 accessesinformation about these posted tweets (messages) from the socialnetworking server 102 using, for example, an API provided by Twitter.The monitoring server 106 can be configured to store particularinformation (or attributes) from the social networking sever 102 usingthe API. The monitoring server 106 can use the acquired information todetermine whether to engage the user that posted the message. In someexamples, the monitoring server 106 presents a graphical user interfacethat displays the acquired information to an operator that decides howto respond to the message (e.g., not to respond or to respond).

For example, referring to FIG. 2A, a computer company that sells harddrives can configure the monitoring server 106 to monitor messagesposted to social networking server 102 for particular keywords relatedto hard drives. For example, the monitoring server 106 can be configuredto monitor the content of messages posted at social networking server102 for the keywords “hard drive” and “buy.” Advantageously, if amessage includes these keywords, the monitoring server 106 can takeappropriate action such that a message is transmitted in response to theposted message (e.g., to provide a link that, once clicked, facilitatessetting up a chat session between the user and a third party to help theuser with purchasing a hard drive, or to provide an advertisement forhard drives that are provided by the computer company). An exemplarysocial media monitoring tool is the tracx platform provided by tracx ofHoboken, N.J.

Referring to step 304, the monitoring server 106 can store data for aselected message if the selected message includes data (e.g., keywordsin the message content, a particular user name, a posting time of themessage, etc.) that the monitoring server 106 is configured to identifyin the posted messages. For example, continuing with the computercompany example described above with respect to step 302, if themonitoring server 106 identifies a message that includes one or more ofthe keywords “hard drive” and/or “buy,” the monitoring server 106 canstore data indicative of the message and/or the originator of themessage in database 108. Advantageously, the stored data for the messageand/or the originating user can be used to authenticate the requestor ofa service request associated with the message.

Referring to step 306, the monitoring server 106 transmits a reply tothe originator of the selected message. For example, referring to FIG.2B, the monitoring server 106 transmits message 202N+1 to user_one 206,using the social networking server 102, in response to message 202Nposted by user_one 206. Message 202N+1 includes content 222 and link 224that causes transmission of a service request to the monitoring server106. For example, link 224 can be a chat invitation (e.g., an invitationto a two-way chat between the user device 104 and a second device). If auser of a user device 104 clicks the link 224, the user device 104 canbe redirected to the application server 110 to open up a chat (which isdescribed in further detail with respect to step 312 below).

Referring further to step 306, some social networking sites provideconstraints on who can respond to a posted message. The monitoringserver 106 can transmit the reply (e.g., using the API for the socialnetworking site) in such a way that it complies with the socialnetworking site constraints and still responds to the user's postedmessage. For example, when using Twitter there may not be a way to senda twitter message to a user device 104 if the posting party (e.g., themonitoring server 106) is not following the tweets that included theidentified message. Continuing with the computer company example, if themonitoring server 106 is not following the account of user_one 206(e.g., not following the tweets of user_one 206), then the monitoringserver 106 can not send user_one 206 a direct message. To comply withthese social networking site constraints, the monitoring server 106 can,for example, send a public tweet and/or send a comment (e.g., a singlemessage to tweeter or a broadcast message to everyone following thetweet).

Referring to step 308, the monitoring server 106 receives datarepresenting the service request. For example, the monitoring server 106receives data indicative of a user of a user device 104 clicking on thelink 224. Depending on the social networking site (and/or how a userconfigures their account with the social networking site), there may notbe any guarantee that the user to whom the monitoring server 106transmitted message 202N+1 is also the same user that clicked on thelink 224. For example, if one or more users are following the messagechain of user_one 206 that includes messages 202A, 202N and 202N+1, thennot only can user_one 206 click the link 224, but so can any of theother users that are viewing the social networking page 200B. In someexamples, any user of the social networking site can view the socialnetworking page 200B (and therefore any user can click the link 224).Therefore, in some embodiments it may be desirable to verify attributesof the sender (e.g., to verify the attributes of the user profile forthe user that clicked link 224) to determine whether that the monitoringserver 106 will provide the service to the sender. The verificationprocess is described in further detail with respect to FIG. 4 .

Referring to step 312, the monitoring server 106 processes the servicerequest. For example, the service request can be a request to initiate aservice provided by application server 110. For example, the applicationserver 110 can be a chat server, and the service request can be arequest to initiate a chat session between the user that initiated theservice request and a second user (e.g., through the applicationserver). The monitoring server 106 can process the service request tochat by transmitting a request to application server 110 to establish achat between the sender of the service request and a third party.Returning to the computer company example, if user_one 206 clicks onlink 224, the monitoring server 106 can instruct the application server110 to set up a chat session between the initiating user and an expertfrom the computer company. The expert can be, for example, an expert inthe field of computer hard drives. Advantageously, this allows theinitiating user to have a chat with the expert about hard drives. Suchchat conversations allow the initiating user to have live-timediscussions to learn information and/or answer any questions they haveabout a particular topic.

In some examples, the expert is matched up with the initiating userbased on one or more criteria. For example, the application server 110can select the expert based on one or more skills (e.g., technologyadvisors, social media agents, etc.). Advantageously, the monitoringserver (and/or the application server 110) can direct the initiatinguser to the person who will help the most. In some examples, the expertis selected based on the content of the messages (e.g., messages thatcontain certain keywords related to the company, keywords indicative ofquestions (e.g., “why” or “?”), etc.). While the monitoring server 106can select the expert based on the content of the messages, themonitoring server 106 can also select the user based on other criteria(e.g., the initiating user's social media profile). For example, asdescribed above, the monitoring server 106 can select the expert basedon other information known about the messages such as, for example, thedate of the message, the number of followers or friends, geographicallocation, etc.

While the term “expert” is used to describe the second person of thechat conversation, this term is used to not only to represent a personwith particular knowledge about a field (e.g., a person knowledgeableabout computer hard drives), but can also be used to refer to any personwho can help the initiating user (e.g., by answering questions,directing them to other websites, providing information, etc.).

In some examples, the service request is an advertisement request. Forexample, the content of message 202N+1 can direct a viewer to click thelink 224 for a coupon. In some examples, the service request is asupport request. In some examples, the service request is a voice callrequest. For example, the service request can include data indicative ofa phone number for the requesting user and a request that the requestinguser be called at the phone number. In some examples, the user ispresented with a dialog box (e.g., as a web page or as an applet) thatallows the user to provide their contact information.

FIG. 4 is a flow chart showing an exemplary method 400 forauthenticating a service request. Method 400 provides for OpenAuthorization (OAuth), where the monitoring server 106 can authenticatethe sender of the service request without the sender providingadditional information (e.g., a username and/or password). At step 402,the monitoring server 106 retrieves data representing a user profile ofthe sender of the service request from the social networking server 102(e.g., retrieves the profile of the sender identified in the dataobtained in step 308 of FIG. 3 ). At step 404, the monitoring server 106compares one or more attributes of the user profile of the senderagainst one or more attributes of the stored data representing theoriginator of the selected message in order to verify the one or moreattributes of the user profile. At step 406, the monitoring server 106determines whether the compared attributes match. If the one or moreattributes match, the method proceeds to step 408 and the monitoringserver 106 processes the service request. If the one or more attributesdo not match, the monitoring server 106 proceeds to step 410 and doesnot process the service request and optionally can provide a defaultresponse (e.g., presentation of a company home web page).

Referring to step 402, the monitoring server 106 can retrieve datarepresenting the sender from the social networking server 102 using, forexample, an API provided by the social networking site that is beingprovided by the social networking server. The monitoring server 106 mayrequest authorization from the sender of the service request beforeretrieving data about the sender. For example, the monitoring server 106can transmit an authorization request to the sender (e.g., via a pop-updialog box, a web page, etc.). The authorization request can be, forexample, data representing an access authorization to retrieve the datarepresenting the requesting user's profile from the social networkingserver 102. The authorization request has a mechanism (e.g., graphicalinterface buttons, check boxes, etc.) for the sender to indicate eitherthat they do or do not authorize the monitoring server 106 to retrievedata from the social networking sever 102 about them. When the useroperates the mechanism, the monitoring server 106 receives datarepresenting a response to the access authorization. If the monitoringserver 106 receives data indicative of a denial from the sender, thenthe monitoring server 106 can terminate method 400 and not retrieve datarepresenting the user from the social networking server 102. If themonitoring server 106 receives data indicative of the sender providingaccess authorization, then the monitoring server 106 is authorized torequest information from the social networking server 102 (e.g., thesender's user profile).

In some examples, the authorization request is embedded in the socialnetworking site. In some examples, when the requesting user clicks link224, the link 224 can redirect the user to a servlet that prompts theuser with the authorization request (e.g., a Java servlet, or some otherprotocol by which the monitoring server 106 can respond to the HTTPrequest). This request can be a request to begin the OAuth stage ofmethod 400. If the monitoring server 106 receives authorization, themonitoring server can request any appropriate information from thesocial networking server 102 (e.g., the user profile). The monitoringserver 106 can retrieve stored information for the originator of theselected message from database 108 (e.g., which was stored in step 304of method 300). The information retrieved from the social networkingserver 102 can include, for example, any information that the monitoringserver 106 can use to verify the user profile against the originator ofthe selected message. For example, the information retrieved from thesocial networking server 102 can include the date of the message, thenumber of followers of the user, the number of friends of the user, theuser's geographical location, an identifier for the message, a token forthe message, the source of the message, the content of the message, thenumber of messages related to the posted message, the user's image, thename of the user, a user name associated with the user, and/or otherinformation gleaned from the message.

Referring to steps 404 and 406, the monitoring server 106 can verify oneor more attributes of the user profile and the originator of theselected message. In some examples, the monitoring server 106 can verifythat the originator of the message is the sender of the service request.For example, the monitoring server 106 can compare a person attribute inthe user profile to a person attribute in the stored data representingthe originator to determine whether the sender is the originator of theselected message. If the person attributes match, then the monitoringserver 106 successfully validated that the sender is the originator ofthe selected message. For example, referring to FIG. 2B, user_one 206posted message 202N, and this information is stored in the database 108.The stored information includes a person attribute indicative ofuser_one 206. If the user_one 206 clicked the link 224 in message202N+1, then the monitoring server 106 will receive a person attributeindicative of user_one 206 in response to its request for informationabout the sender of the service request. Since the person attribute forthe originator of message 202N is the same as the person attribute forthe sender of the service request, the monitoring server 106 canidentify that the same user clicked the link 224. Advantageously, themonitoring server 106 can process the service request (e.g., step 408)since the service request was effected by an intended recipient of theservice request.

In some examples, the monitoring server 106 can verify one or moreattributes between the user profile and the originator of the selectedmessage that are not unique to the originator of the selected message.For example, the one or more attributes can be shared by a group ofpeople (e.g., and the monitoring server 106 can be configured to engagewith members of the particular group). Advantageously, the monitoringserver 106 need not verify that the service request was effected by thesame user that posted the message, but can verify other characteristics,such as characteristics of user profiles. For example, the monitoringserver can verify whether there is any relationship between theoriginator of the message and the sender of the service request (e.g.,if they are friends in the social networking site), whether they arelocated within a same geographical area, whether they share one or morecommon interests or hobbies, and/or other attributes. For example, themonitoring server 106 can verify the sender of the service request is afollower of the originator of the selected message. The monitoringserver 106 can compare a follower attribute in the user profile to afollower attribute in the stored data representing the originator todetermine whether the sender is a follower of the originator of theselected message. Advantageously, by performing such comparisons, themonitoring server 106 can determine that the sender of the servicerequest is likely to share one or more attributes or characteristicswith the originator of the message, and therefore is likely to be aproper audience for the service request.

In some examples, the monitoring server 106 verifies the sender of theservice request is in the same geographical location as the originatorof the message. For example, the monitoring server 106 can compare alocation attribute in the user profile to a location attribute in thestored data representing the originator to determine whether the senderis in a same location as the originator of the selected message.Advantageously, by comparing the location information, the monitoringserver 106 can verify that, for example, targeted advertisements areprovided to appropriate recipients.

Advantageously, the monitoring server 106 can determine if the sender ofthe service request is the same person as the originator of the selectedmessage based on, for example, a user ID, date, time, location (e.g.,the location of the message, based on packet information andgeographical location information), and any other attributes relevant toidentifying the sender of the service request. Advantageously, becausethe monitoring server 106 has stored data for the selected message, themonitoring server 106 is not limited to matching the identity of thesender and the originator. As another example, the monitoring server 106can determine whether the sender of the service request is a “friend” ofthe selected message. For example, the monitoring server 106 candetermine whether the sender has some relationship in the social networkto the originator of the selected message (e.g., as indicated betweentheir user profiles). As an illustrative example, the monitoring server106 can use an identification field in the originator's profile and usethe identification field to get all the followers of the originator(e.g., via the social networking site's API). The monitoring server 106can perform a basic search of the retrieved list of followers todetermine whether the sender of the service request is a follower of theoriginator of the stored message.

Referring to step 408, after the sender of the service request isauthenticated, the sender can be redirected based on their user profile.For example, the sender can be redirected to a chat session with anexpert. The application server 110 can select the expert based on one ormore skills of the expert (e.g., technology advisors, social mediaagents, etc.) based on the sender's user profile. For example, asdescribed above, the monitoring server 106 can select the expert basedon the number of followers or friends in the sender's user profile, thegeographical location in the user's profile, etc.

Referring to step 410, the monitoring server 106 can perform otheractions even though the monitoring server 106 does not process theservice request. For example, the sender of the service request can bedirected to a particular web page (e.g., a landing page). For example,the sender can be directed to a default advertisement, a web page thatexplains the authentication process, a web page that explains why thesender was not provided with the service request, and/or the like.

In some examples, the monitoring server 106 can monitor a first socialnetworking site and respond to messages posted at the first socialnetworking site through a second social networking site. For example,referring to method 300 in FIG. 3 , the monitoring server 106 canmonitor data indicative of messages posted at social networking server102. The monitoring server 106 can retrieve data representing a seconduser profile of the originator of the selected message from a secondsocial networking server (e.g., from a different social networkingserver than social networking server 102, which is not shown in FIG. 1). Referring to step 306, the monitoring server 106 can transmit datarepresenting the reply to the originator at the second social networkingserver (e.g., and not through the social networking server 102).

For example, the monitoring server 106 can monitor tweets posted toTwitter (e.g., via the Twitter API). If the monitoring server 106desires to respond to a tweet (e.g., the tweet includes one or morekeywords of interest), the monitoring server 106 can identify one ormore additional social networking sites that the originator of theselected message belongs to (e.g., other social networking sites wherethe originator has an account). For example, the monitoring server 106can determine that the originator has a Facebook account. The monitoringserver 106 can transmit a reply (based on the originator's tweet) to theoriginator via Facebook instead of through Twitter.

In some examples, the monitoring server 106 stores an aggregated socialmedia profile for the originator comprising any other user profiles (orinformation) for the originator at other social media services. Themonitoring server 106 can also store the data representing the selectedmessage and the originator of the selected message in the aggregatedsocial media profile. Advantageously, the monitoring server 106 can usethe aggregated social media profile to respond to the originator at anyone of its many social media services. The social media server 102 canprovide multiple social networking sites, a single social media server102 can provide a single social networking site, or any combinationthereof. The social networking site can include Twitter, Facebook,Myspace, LinkedIn, and/or any other social networking service.

The above-described computerized methods and apparatuses can beimplemented in digital and/or analog electronic circuitry, or incomputer hardware, firmware, software, or in combinations of them. Theimplementation can be as a computer program product, i.e., a computerprogram tangibly embodied in a machine-readable storage device, forexecution by, or to control the operation of, a data processingapparatus, e.g., a programmable processor, a computer, and/or multiplecomputers. A computer program can be written in any form of computer orprogramming language, including source code, compiled code, interpretedcode and/or machine code, and the computer program can be deployed inany form, including as a stand-alone program or as a subroutine,element, or other unit suitable for use in a computing environment. Acomputer program can be deployed to be executed on one computer or onmultiple computers at one or more sites.

The computerized method steps can be performed by one or more processorsexecuting a computer program to perform functions of the invention byoperating on input data and/or generating output data. Method steps canalso be performed by, and an apparatus can be implemented as, specialpurpose logic circuitry, e.g., a FPGA (field programmable gate array), aFPAA (field-programmable analog array), a CPLD (complex programmablelogic device), a PSoC (Programmable System-on-Chip), ASIP(application-specific instruction-set processor), or an ASIC(application-specific integrated circuit). Subroutines can refer toportions of the computer program and/or the processor/special circuitrythat implement one or more functions.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital or analog computer.Generally, a processor receives instructions and data from a read-onlymemory or a random access memory or both. The essential elements of acomputer are a processor for executing instructions and one or morememory devices for storing instructions and/or data. Memory devices,such as a cache, can be used to temporarily store data. Memory devicescan also be used for long-term data storage. Generally, a computer alsoincludes, or is operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. A computer canalso be operatively coupled to a communications network in order toreceive instructions and/or data from the network and/or to transferinstructions and/or data to the network. Computer-readable storagedevices suitable for embodying computer program instructions and datainclude all forms of volatile and non-volatile memory, including by wayof example semiconductor memory devices, e.g., DRAM, SRAM, EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and optical disks,e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memorycan be supplemented by and/or incorporated in special purpose logiccircuitry.

To provide for interaction with a user, the above described techniquescan be implemented on a computer in communication with a display device,e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display)monitor, for displaying information to the user and a keyboard and apointing device, e.g., a mouse, a trackball, a touchpad, or a motionsensor, by which the user can provide input to the computer (e.g.,interact with a user interface element). Other kinds of devices can beused to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, and/ortactile input.

The above described techniques can be implemented in a distributedcomputing system that includes a back-end component. The back-endcomponent can, for example, be a data server, a middleware component,and/or an application server. The above described techniques can beimplemented in a distributed computing system that includes a front-endcomponent. The front-end component can, for example, be a clientcomputer having a graphical user interface, a Web browser through whicha user can interact with an example implementation, and/or othergraphical user interfaces for a transmitting device. The above describedtechniques can be implemented in a distributed computing system thatincludes any combination of such back-end, middleware, or front-endcomponents.

The computing system can include clients and servers. A client and aserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The components of the computing system can be interconnected by any formor medium of digital or analog data communication (e.g., a communicationnetwork). Examples of communication networks include circuit-based andpacket-based networks. Packet-based networks can include, for example,the Internet, a carrier internet protocol (IP) network (e.g., local areanetwork (LAN), wide area network (WAN), campus area network (CAN),metropolitan area network (MAN), home area network (HAN)), a private IPnetwork, an IP private branch exchange (IPBX), a wireless network (e.g.,radio access network (RAN), 802.11 network, 802.16 network, generalpacket radio service (GPRS) network, HiperLAN), and/or otherpacket-based networks. Circuit-based networks can include, for example,the public switched telephone network (PSTN), a private branch exchange(PBX), a wireless network (e.g., RAN, bluetooth, code-division multipleaccess (CDMA) network, time division multiple access (TDMA) network,global system for mobile communications (GSM) network), and/or othercircuit-based networks.

Devices of the computing system and/or computing devices can include,for example, a computer, a computer with a browser device, a telephone,an IP phone, a mobile device (e.g., cellular phone, personal digitalassistant (PDA) device, laptop computer, electronic mail device), aserver, a rack with one or more processing cards, special purposecircuitry, and/or other communication devices. The browser deviceincludes, for example, a computer (e.g., desktop computer, laptopcomputer) with a world wide web browser (e.g., Microsoft® InternetExplorer® available from Microsoft Corporation, Mozilla® Firefoxavailable from Mozilla Corporation). A mobile computing device includes,for example, a Blackberry®. IP phones include, for example, a Cisco®Unified IP Phone 7985G available from Cisco System, Inc, and/or a Cisco®Unified Wireless Phone 7920 available from Cisco System, Inc.

One skilled in the art will realize the invention may be embodied inother specific forms without departing from the spirit or essentialcharacteristics thereof. The foregoing embodiments are therefore to beconsidered in all respects illustrative rather than limiting of theinvention described herein. Scope of the invention is thus indicated bythe appended claims, rather than by the foregoing description, and allchanges that come within the meaning and range of equivalency of theclaims are therefore intended to be embraced therein.

The invention claimed is:
 1. A computer-implemented method, comprising:monitoring one or more messages posted by an originating device on afirst social networking website, wherein the originating device on thefirst social networking website is operated by a user that authored theone or more messages, and wherein the user is associated with a firstuser profile of the first social networking website; identifying one ormore criteria within the one or more messages, wherein the one or morecriteria are associated with content of the one or more messages, andwherein the content includes one or more keywords corresponding to athird party entity unassociated with the first social networkingwebsite; generating a response message to the one or more messages basedon the criteria, wherein the response message includes data foractuating transmission of a service request to a designated recipientdevice corresponding to the criteria and a link selectable to connectthe originating device to a device of the third party entity; retrievinga second user profile of the user from a second social networkingwebsite; aggregating the first user profile with the second user profileinto an aggregated user profile stored in memory; and transmitting theresponse message, wherein the response message is transmitted using thesecond social networking website indicated by the aggregated userprofile.
 2. The computer-implemented method of claim 1, furthercomprising: authenticating the originating device, whereinauthenticating the originating device is performed by a server actuatingtransmission of the service request.
 3. The computer-implemented methodof claim 1, wherein transmission of the service request is actuated, andfurther comprising: initiating a virtual chat session between theoriginating device and the designated recipient device based on theservice request.
 4. The computer-implemented method of claim 1, whereinthe response message further comprises one or more advertisementscorresponding to the content of the one or more messages.
 5. Thecomputer-implemented method of claim 1, further comprising: storing theone or more messages in memory.
 6. A system, comprising: one or moreprocessors; and memory storing thereon instructions that, as a result ofbeing executed by the one or more processors, cause the system to:monitor one or more messages posted by an originating device on a firstsocial networking website, wherein the originating device on the firstsocial networking website is operated by a user that authored the one ormore messages, and wherein the user is associated with a first userprofile of the first social networking website; identify one or morecriteria within the one or more messages, wherein the one or morecriteria are associated with one or more content of the one or moremessages, and wherein the content includes one or more keywordscorresponding to a third party entity unassociated with the first socialnetworking website; generate a response message to the one or moremessages based on the criteria, wherein the response message includesdata for actuating transmission of a service request to a designatedrecipient device corresponding to the criteria and a link selectable toconnect the originating device to a device of the third party entity;retrieve a second user profile of the user from a second socialnetworking website; aggregate the first user profile with the seconduser profile into an aggregated user profile stored in memory; andtransmit the response message, wherein the response message istransmitted using the second social networking website indicated by theaggregated user profile.
 7. The system of claim 6, wherein theinstructions further cause the system to: authenticate the originatingdevice, wherein authenticating the originating device is performed by aserver actuating transmission of the service request.
 8. The system ofclaim 6, wherein transmission of the service request is actuated, andthe instructions further cause the system to: initiate a virtual chatsession between the originating device and the designated recipientdevice based on the service request.
 9. The system of claim 6, whereinthe response message further comprises one or more advertisementscorresponding to the content of the one or more messages.
 10. The systemof claim 6, wherein the instructions further cause the system to: storethe one or more messages in memory.
 11. A non-transitory,computer-readable storage medium storing thereon executable instructionsthat, as a result of being executed by a computer system, cause thecomputer system to: monitor one or more messages posted by anoriginating device on a first social networking website, wherein theoriginating device on the first social networking website is operated bya user that authored the one or more messages, and wherein the user isassociated with a first user profile of the first social networkingwebsite; identify one or more criteria within the one or more messages,wherein the one or more criteria are associated with content of the oneor more messages, and wherein the content includes one or more keywordscorresponding to a third party entity unassociated with the first socialnetworking website; generate a response message to the one or moremessages based on the criteria, wherein the response message includesdata for actuating transmission of a service request to a designatedrecipient device corresponding to the criteria and a link selectable toconnect the originating device to a device of the third party entity;retrieve a second user profile of the user from a second socialnetworking website; aggregate the first user profile with the seconduser profile into an aggregated user profile stored in memory; andtransmit the response message, wherein the response message istransmitted using the second social networking website indicated by theaggregated user profile.
 12. The non-transitory, computer-readablestorage medium of claim 11, wherein the executable instructions furthercause the computer system to: authenticate the originating device,wherein authenticating the originating device is performed by a serveractuating transmission of the service request.
 13. The non-transitory,computer-readable storage medium of claim 11, wherein transmission ofthe service request is actuated, and the executable instructions furthercause the computer system to: initiate a virtual chat session betweenthe originating device and the designated recipient device based on theservice request.
 14. The non-transitory, computer-readable storagemedium of claim 11, wherein the response message further comprises oneor more advertisements corresponding to the content of the one or moremessages.
 15. The non-transitory, computer-readable storage medium ofclaim 11, wherein the executable instructions further cause the computersystem to: storing the one or more messages in memory.